Skip to content

lennie#38

Open
leninist1 wants to merge 15 commits intoInfiniTensor:mainfrom
leninist1:main
Open

lennie#38
leninist1 wants to merge 15 commits intoInfiniTensor:mainfrom
leninist1:main

Conversation

@leninist1
Copy link

项目详情:Llaisys

1. 项目概览

主要实现了项目3:构建了一个能与单用户实时对话的聊天机器人, 实现随机采样,支持 TemperatureTop-KTop-P,支持流式传输和会话管理(编辑对话、重新回答、历史对话),支持page attention和前缀匹配kv cache复用。额外做了cuda算子。能用nvidia推理。

2. 项目结构

项目文件结构清晰,主要分为核心 C++ 实现、Python 绑定和测试用例三部分。

llaisys/
├── src/                    # C++ 核心源码
│   ├── llaisys/            # 高层 C++ 接口 (qwen2.cc, tensor.cc)
│   ├── core/               # 核心运行时 (内存分配, Context, Storage)
│   ├── device/             # 设备后端实现 (CPU, NVIDIA)
│   ├── ops/                # 自定义算子实现 (Attention, RoPE, RMSNorm 等)
│   ├── tensor/             # Tensor 数据结构实现
│   └── utils/              # 通用工具
├── python/                 # Python 绑定与应用
│   ├── llaisys/            # Python 包
│   │   ├── libllaisys/     # C++ 扩展库 (.so/.dll)
│   │   ├── models/         # 模型 Python 封装
│   │   ├── server/         # FastAPI 聊天服务器
│   │   └── webUI/          # 简易 Web 界面
├── include/                # C++ 头文件导出
├── test/                   # 测试脚本
├── xmake.lua               # xmake 构建配置
└── xmake/                  # 平台相关构建脚本

3. 复现步骤

3.1. 环境准备

在开始之前,请确保您的系统满足以下要求:

  • 操作系统: Linux (推荐 Ubuntu 20.04+)
  • 编译器: 支持 C++17 的编译器 (如 GCC 9+, Clang 10+)
  • 构建工具: xmake
  • Python: Python 3.8+
  • CUDA (可选): 如果需要使用 NVIDIA GPU 加速,需安装 CUDA Toolkit (推荐 11.0+)

安装依赖示例 (Ubuntu)

# 安装基础工具
sudo apt update
sudo apt install -y build-essential git python3 python3-pip

# 安装 xmake
bash <(curl -fsSL https://xmake.io/shget.text)

# 安装 Python 依赖
pip install fastapi uvicorn pydantic transformers torch safetensors accelerate sse-starlette

3.2. 编译项目

项目使用 xmake 进行构建管理。

3.2.1 配置构建

CPU 版本 (默认):

xmake f --mode=release

NVIDIA GPU 版本:
如果您的机器有 NVIDIA 显卡并安装了 CUDA,可以开启 GPU 支持:

xmake f --mode=release --nv-gpu=y

3.2.2 编译

执行以下命令进行编译。编译完成后,生成的共享库会自动复制到 Python 包目录 (python/llaisys/libllaisys/)。

xmake

3.3. 运行项目

项目包含一个兼容 OpenAI API 的聊天服务器和一个简单的 Web UI。

3.3.1 准备模型

您需要下载 Qwen2 模型权重(如 Qwen2-0.5B-Instruct 或其他尺寸)。
假设模型下载到了 /path/to/Qwen2-0.5B-Instruct

3.3.2 启动服务器

设置 PYTHONPATH 以便 Python 能找到 llaisys 包,然后启动服务器。

# 设置 PYTHONPATH (在项目根目录下执行)
export PYTHONPATH=$PYTHONPATH:$(pwd)/python

# 启动聊天服务器
# 参数说明:
# --model_path: 模型权重路径
# --device: 运行设备 (cpu 或 nvidia)
# --host: 监听地址 (默认 0.0.0.0)
# --port: 监听端口 (默认 8000)

python python/llaisys/server/chat_server.py \
    --model_path /path/to/Qwen2-0.5B-Instruct \
    --device cpu  # 如果编译了 GPU 版本,可改为 nvidia

3.3.3 访问服务

服务器启动后,您可以:

  1. Web UI: 在浏览器中访问 http://localhost:8000/ 进行对话。
  2. API: 使用兼容 OpenAI 的客户端访问 http://localhost:8000/v1/chat/completions

API 测试示例:

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen2",
    "messages": [{"role": "user", "content": "你好,请介绍一下你自己。"}],
    "stream": true
  }'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant